 [Current]

 - Removed the dependency on zlib, and replaced crc32 function with internal one.
 - Removed DOS and Windows ports.
 - Changed most of the variables in the codebase to stdint.h types to avoid
   problems running on diverse architectures.
 - Removed x86 assembly and the option for faster but less accurate code blocks from the CPU core.
 - Created a cross-platform port using GLFW.
 - Moved all core source code to one directory, and removed stale files and other garbage.
 - Fixed a bug where the TMS palette is set up by default as SMS programs that use TMS modes
   exclusively never transition in to or out of mode 4.
 - Changed renderer to support 32-bit output only. Though if you need to change this behavior
   just update the remap_internal_to_host function and pixel[] array and MAKE_PIXEL macros in render.c
   and render.h.
 - This version is an amalgamation of Charles MacDonald's changes for his
   version 1.8 as well as the changes done for this fork.

 [1.5]

 - Fixed a save state load error. (Thanks to Akop Karapetyan for reporting
   the bug)
 - Added preliminary support for "Janggun-ui Adeul" (Thanks to Omar Cornut
   for the dump and technical information).

 [1.4]

 - Added support for 32K and 8KB-banked Korean games. (Thanks to Omar Cornut
   for the dump and technical information)
 - Removed support for 8-bit color.
 - Removed tile cache for Mode 4. Note to porters: new rendering code
   could potentially have endian or unaligned memory access issues.
 - The DOS port is no longer being maintained and will be removed
   in a future version.

 [1.3]

 - Fixed last entry in CRC lookup table.
 - Added TMS9918 display mode support for SMS2 and GG video chips.
 - Added very preliminary Windows port using Allegro.

 [1.2]

 - Fixed smptab allocation error.
 - Various source code cleanups.
 - Minor tweaks to sync with Mac source changes.
 - New sound update code from Richard Bannister.
 - Added more support for PAL hardware.
 - Added partial support for Codemasters games.
 - Fixed some aspects of ROM loading.
 - Fixed SRAM restore bug in save states.
 - Fixed viewport size check when going from extended to normal mode, which
   fixes Fantastic Dizzy opening screen and V counter test program.
 - Split up VDP emulation into SMS/GG/MD specific parts.
 - Added support for different port I/O port memory maps.
 - Fixed mapper restore bug in save states.
 - Fixed UI key management in dos/main.c
 - Improved HV counter emulation.
 - Added dump VRAM keyboard shortcut. (Alt+V)
 - Split up DOS code into different modules.
 - Fixed EXT connector and related I/O port 2 behavior.
 - Added GG I/O register emulation.
 - Changed SRAM management.
 - Modified use of reset/poweron/poweroff functions.
 - Added configuration via CRC for some Codemasters games.
 - Fixed implementation of GG input port.
 - Added cycle counter feature to Z80 emulator.
 - Added shutdown functions to other modules.
 - Mapped 2nd player inputs to keyboard numeric pad in dos/main.c
 - Fixed reset button handling in dos/main.c
 - Moved Z80 port handlers to memz80.c
 - Fixed console type assign in loadrom.c (removed TYPE_* defines)
 - Added support for I/O chip disable control.
 - Rewrote I/O chip emulation.
 - Fixed pixel LUT to handle sprite collision behind high priority BG tiles.
 - Added emulation of sprite overflow status flag.
 - Added 'granularity' member to bitmap struct and fixed DOS blur code.
 - Fixed FM sound restore on state load / FM emulator change.
 - Corrected screen blanking width.
 - Removed sprite limit disable feature.
 - Added support for extended display modes.
 - Added partial support for PAL display timing.
 - Removed BMP_* macros, replaced with bitmap.viewport.* variables.
 - Removed Y's (J) rendering hack that was problematic in other games.
 - Added error logging routines.
 - Removed Game Gear specific rendering speedups.
 - Replaced cart.type with sms.console, replaced access with IS_GG macro.
 - Renamed INPUT_SOFT_RESET to INPUT_RESET. Use for SMS games only.
 - Removed INPUT_HARD_RESET, use system_reset() instead.
 - Modified vdp_ctrl_w() to update address register LSB during leading write.
 - Changed path length in wram/state/snap routines to PATH_MAX in DOS code.
 - Added define to specify message length in DOS code.
 - Added r/w handlers for FM detection latch access, renamed fm* -> fmunit*
 - Added territory/console members to struct sms (removed sms.country).
   Removed TYPE_* and replaced with TERRITORY_* enums.
 - Fixed FM register restore during state load when sound is disabled.
 - Updated memory system to support 1K pages.
 - Updated zlib to 1.2.1 and unzip.c to 1.0
 - Moved sound management out of system.c into sound/sound.c,fmintf.c
 - Moved state management out of system.c into state.c
 - Rearranged header file include order in system.h
 - Added support for MAME YM2413 emulator
 - Abstracted FM sound chip interface to support both YM2413 emulators
 - Updated timeline in dos/main.c and system.c
 - Removed SSL logging
 - Fixed path length in loadrom.c to MAX_PATH from limits.h
 - Added library version display option to dos/main.c
 - Moved file I/O code to fileio.c
 - Fixed loadrom.c to support 16K ROM images
 - Updated documentation and porting instructions
 - Modified EMU2413 to have update function for 2-channel output
 - Modified dos\config.c to ensure parameters are left during option parsing
 - Modified YM2413 emulator to check for NULL pointer during shutdown
 - Cleaned up variable names in snd struct
 - Added default mixer callback
 - Made sound_shutdown() free memory
 - Modified sound_init() to allow re-initialization
 - Cleaned up system.h, sms.h, vdp.h
 - Optimized color expansion for paletteized 8-bit format in render.c
 - Added Maxim's SN76489 emulator, removed the old one
 - Added YM2413 context management
 - Fixed PSG/FM state save/load behavior

 [0.9.4b]

 - Removed calls to text_mode() and changed textprintf() to textprintf_ex().
   for compatability with Allegro v4.1.11 (WIP).
 - Removed VERSION from shared.h and add APP_NAME, APP_VERSION to system.h.
 - Changed TYPE_OVERSEAS to TYPE_EXPORT in sms.h.
 - Renamed dos.c/dos.h to main.c/main.h.
 - Fixed FPS meter state display.
 - Moved 1P buttons from ALT/LCTRL keys to S/A keys.
 - Added work RAM dump feature (Alt+W).
 - Added mostly complete HV counter tables to hvc.h.
 - Rewrote VDP frame and line interrupt handling. 
 - Added ID and version number to state files.
 - Removed vdp_run(), renamed sms_run() to system_run() in system.c.
 - Merged cpu_reset() with sms_reset().
 - Consolidated parts of the ROM file loading routines.
 - Increased resolution of GG palette (Mean Bean Machine intro).
 - Fixed GG palette write handling (RoboCop 3 intro).
 - Rewrote and optimized tile caching routines.
 - Made SMS/GG palette brighter.
 - Fixed leftmost column drawing in SMS mode.
 - Upgraded Z80 CPU emulator from V2.7 to V3.3.

 [Version 0.9.4a]

 - A few cleanups so SMS Plus compiles with no errors or warnings.
 - Use of MMX code is now automatic but can still be disabled manually.
 - Replaced FM sound emulation with Mitsutaka Okazaki's EMU2413 library.
 - Fixed parts of the VDP emulation.
 - Removed support for PSX port.

 [Version 0.9.3]

 - Stereo Game Gear sound.
 - Save states, 10 per game.
 - Sound logging, output is .GYM compatible.
 - Optimized memory access for improved speed.
 - Screen snapshots in PCX format.
 - Stereo swap option for left and right speakers.
 - Added FPS meter.
 - Added some option toggle keys for in-game configuration.
 - Definable video driver.
 - Tweaked display modes for full-screen gameplay.
 - More of the usual internal changes and bug fixes.

 [Version 0.9.2]

 - Digital YM2413 FM sound emulation. Drums sound real good, too.
 - System territory switch, default is overseas (Europe / USA)
 - Made some internal changes and clean-ups to the source code.
 - Revised document on porting to be actually useful.
 - Adjusted version number to stay in sync with the Macintosh port.
 - Support for ZIPped game images and games with 512-byte headers.
 - Screen expansion now works for 16-bit displays.
 - Fixed some centering problems with screen expansion on GG games.
 - Sound output using SEAL should be a bit clearer.
 - Configuration file support.

 [Version 0.9]

 Everything has been rewritten from scratch. The emulation is much more
 accurate, as a result compatability has improved greatly.

 The DOS port has a lot of nice features added, including 16-bit color,
 display blurring, digital sound emulation, and scanlines, which were the
 most requested items.

 Also new is a Sony Playstation port, though it's highly experimental
 and has some serious performance issues.
